/*
 * 1719. 计算最大值
 * 给一个字符串类型的数字, 写一个方法去找到最大值, 你可以在任意两个数字间加 + 或 *
 * https://www.lintcode.com/problem/calculate-maximum-value/description
 * 
 * 样例
 * 给出 str = 01231, 返回 10 ((((0 + 1) + 2) * 3) + 1) = 10 我们得到了最大值 10
 * 给出 str = 891, 返回 73 因为 8 * 9 * 1 = 72 和 8 * 9 + 1 = 73, 所以73是最大值
 * 
 * 2018.06.15 @jeyming
 */
package calculate_maximum_value_1719;

public class Calculate_maximum_value_1719 {
    /**
     * @param str: the given string
     * @return: the maximum value
     */
    public static int calcMaxValue(String str) {
        // write your code here
//    	if(str == null) {
//    		return (Integer) null;
//    	} else {
//    		int sum = 0;
//        	int[] strInt = new int[str.length()];
//        	for(int i = 0; i < str.length(); ++i) {
//        		strInt[i] = str.charAt(i) - '0';
//        	}
//        	for(int i = 0; i < strInt.length; ++i) {
//        		if(i == 0) {
//        			sum = strInt[i];
//        		} else if(strInt[i] == 0 || strInt[i] == 1) {
//        			sum += strInt[i];
//        		} else {
//        			sum *= strInt[i];
//        		}
//        	}
//        	return sum;
//    	}
    	int sum = 0;
    	for(int i = 0; i < str.length(); ++i) {
    		if(i == 0) {
    			sum = str.charAt(i) - '0';
    		} else if((str.charAt(i) == '0') || (str.charAt(i) == '1')) {
    			sum +=  str.charAt(i) - '0';
    		} else {
    			if((str.charAt(i - 1) == '1') || ((str.charAt(i - 1) == '0') && (i - 1 == 0))) {
    				sum += str.charAt(i) - '0';
    			} else {
    				sum *= str.charAt(i) - '0';
     			}
    		}
    	}
    	return sum;
    }

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(calcMaxValue("01231"));
		System.out.println(calcMaxValue("891"));
		System.out.println(calcMaxValue("05049298"));
	}

}
